深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet
上一期,我们一起学习了深度学习卷积神经网络中的代码实现,内存计算以及池化层的原理等,
深度学习三人行(第9期)----卷积神经网络实战进阶(附代码)
接下来我们一起学习下关于CNN中比较经典的网络LeNet-5和AlexNet的相关知识,学习的路上我们多多交流,共同进步。本期主要内容如下:
CNN一般框架
LeNet-5网络
AlexNet网络
小结
一. CNN一般框架
卷积神经网络的典型框架就是由几个卷积层(卷积层后面一般紧跟着ReLU激活层),然后接着是一个池化层,再几个卷积层,再一个池化层等等,随着网络的传输,图像的尺寸越来越小,但是特征图越来越多。在卷积层的结尾往往会跟几个全连接层(+ReLU激活),最后跟一个输出层(比如softmax输出层)。如下图:
这里留一个问题,关于卷积层卷积核的问题,一个9x9的卷积核和两个3x3的卷积核效果是否一样?原因是什么?欢迎留言讨论。
经过这几年的发展,卷积神经网络出现了多种经典的网络,一个很好的衡量方法就是在一些大赛中模型的错误率,比方说ILSVRC ImageNet比赛。这个比赛在最近五年类,从26%的错误率降低到3%。CNN独领风骚!这其中第一个网络就是1998年的LeNet-5网络,接下来就是2012年的AlexNet,2014年的GoogLeNet和2015年的ResNet。
二. LeNet-5网络
LeNet-5网络是比较出名的经典的CNN网络,该网络在1998年被Yann LeCun创建,广泛用于手写字体识别(MNIST),我们一起看一下它的结构:
这里有一些细节值得注意:
MNIST数据的图像是28x28尺寸的,但是在输入网络之前,图像被0扩充到了32x32,并且被归一化,而后面的网络并没有用padding,所以图像的size会随着网络的加深而不断变小。
平均值的池化层比通常用的稍微复杂一些:每一个神经元计算输入的平均值,然后每张特征图再乘以一个可学习的系数,之后再加上一个可以学习的偏置项,最后在激活。
C3卷积层中的大部分神经元并不是与S2层的6张图都相连,而是只与其中的三张或四张特征图相连。
输出层也是有一些特别,一般的输出层都是计算输入和权重的相乘,而该网络的输出却是输入和权重之间欧式距离的平方,每一个输出衡量了图像属于某一类具体数字的程度。
三. AlexNet网络
该网络以大优势赢得2012年的ImageNet ISLVRC大赛,由Alex Krizhevsky发现,跟LeNet-5网络有些相似,但是更大更深一些。该网络的一大特色就是直接的将卷积层堆叠到一起,而不是卷积层之后跟着池化层。如下:
为了降低过拟合的风险,Alex用了之前讨论的两种正则化技术
深度学习三人行(第7期)----深度学习之避免过拟合(正则化)
首先在training的时候对F8和F9运用了dropout(50% dropout 率),其次通过随机平移,翻转以及改变光照等技术进行数据增强。
AlexNet在C1和C3的ReLU层后面用了一个比较具有竞争性的正则化技术,称作局部响应正则化。这种正则化技术使得那些最强激活的神经元去抑制那些相邻特征图中相同位置的神经元。这就使得不同的特征图更加的特别化,推动它们去寻找更加广泛的特征,最终增加了模型的泛化能力。下面的公式显示了如何应用局部响应正则化:
其中bi在特征图i上面某个位置上的正则化输出结果,ai为ReLU激活函数之后的那个激活的神经元,但是还没有正则化,k, α,β和r都是超参数,k叫做偏置,r是深度半径,fn为特征图的个数。
举个例子,如果r=2并且某个特征图上某个位置有一个强激活的神经元,那么它将抑制该特征图上下两张特征图的该位置的神经元激活。
在AlexNet中,超参数一般设置如下:r=2, α=0.00002,β=0.75和k=1,这个在TensorFlow中可以用函数
local_response_normalization()实现。
四. 小结
今天,我们一起学习了卷积神经网络的经典框架,以及常用在手写字符识别的经典网络LeNet-5,还有运用局部响应正则化技术的AlexNet,在学习的路上,我们共同进步,多谢有你。
(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)